import { getUserInfo, getUserInfoDetailById, loginAPI } from '@/api/user'
import { resetRouter } from '@/router'

const state = {
  token: '',
  // 定义一个空的对象 不是null 因为后边我要开发userInfo的属性给别人用  userInfo.name
  userInfo: {}
}

const mutations = {
  // 创建token
  setToken(state, token) {
    state.token = token
  },
  // 删除token
  delToken(state) {
    state.token = null
  },
  // 设置userInfo
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  // 清除userInfo
  removeInfo(state) {
    state.userInfo = {}
  }
}

const actions = {
  // 登录
  async login(context, data) {
    const res = await loginAPI(data)
    // if (res.data.success) {
    context.commit('setToken', res)
    // localStorage.setItem('time', Date.now())
    // }
  },
  // 获取用户信息
  async getUserInfo(context) {
    const res = await getUserInfo() // 获取返回值
    const baseInfo = await getUserInfoDetailById(res.userId) // 获取员工信息
    const baseRes = { ...res, ...baseInfo }
    context.commit('setUserInfo', baseRes)// 将整个的个人信息设置到用户的vuex数据中
    return baseRes // 这里为什么要返回 为后面埋下伏笔
  },
  // 退出登录
  logOut(context) {
    context.commit('delToken')
    context.commit('removeInfo')
    resetRouter()
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
